package com.naiterui.ehp.bp.domain;

import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;

/**
 * 系统公告信息表
 *
 * @since 2.0.0
 */
@Entity
@Table(name = "cms_notice_info")
public class NoticeInfo implements java.io.Serializable {

    /**
     * 字段或域定义：<code>serialVersionUID</code>
     */
    private static final long serialVersionUID = 2378276222470443787L;
    /**
     * 公告类型，1：图文：<code>NOTICE_TYPE_PIC_TEXT</code>
     */
    public static final int NOTICE_TYPE_PIC_TEXT = 1;
    /**
     * 公告类型，2：外链：<code>NOTICE_TYPE_LINK_URL</code>
     */
    public static final int NOTICE_TYPE_LINK_URL = 2;
    /**
     * 公告类型，3：纯文本：<code>NOTICE_TYPE_PLAIN_TEXT</code>
     */
    public static final int NOTICE_TYPE_PLAIN_TEXT = 3;

    /**
     * 删除标记-已删除 ：<code>NOTICE_FLAG_DELETE</code>
     */
    public static final int NOTICE_FLAG_DELETE = 0;
    /**
     * 删除标记-未删除 ：<code>NOTICE_DELETE_NOT_DELETE</code>
     */
    public static final int NOTICE_FLAG_NOT_DELETE = 1;

    /**
     * 封面图片是否在正文显示，0-否：<code>NOTICE_COVER_SHOW</code>
     */
    public static final int NOTICE_COVER_SHOW = 0;
    /**
     * 封面图片是否在正文显示，1-是：<code>NOTICE_COVER_HIDDEN</code>
     */
    public static final int NOTICE_COVER_HIDDEN = 1;
    /**
     * 公告状态(1：待发送)
     */
    public static final int NOTICE_STATUS_WAIT_PUSH = 1;
    /**
     * 公告状态(2：公告中)
     */
    public static final int NOTICE_STATUS_EFFECTIVE = 2;
    /**
     * 公告状态(3：已停止)
     */
    public static final int NOTICE_STATUS_STOP = 3;

    /**
     * 公告状态(4：已失效)
     */
    public static final int NOTICE_STATUS_INVALID = 4;

    /**
     * CMS列表可做操作
     * 1：查看，2：编辑，3：删除，4：停止
     */
    /**
     * CMS列表可做操作-1.查看：<code>OPERATE_VIEW</code>
     */
    public static final int OPERATE_VIEW = 1;
    /**
     * CMS列表可做操作-2.编辑：<code>OPERATE_EDIT</code>
     */
    public static final int OPERATE_EDIT = 2;
    /**
     * CMS列表可做操作-3.删除：<code>OPERATE_REMOVE</code>
     */
    public static final int OPERATE_REMOVE = 3;
    /**
     * CMS列表可做操作-4.停止<code>OPERATE_PAUSE</code>
     */
    public static final int OPERATE_PAUSE = 4;
    /**
     * 是否选择医生标签-0.未选择医生标签
     */
    public static final int NOT_LABEL = 0;
    /**
     * 是否选择医生标签-1.已选择医生标签
     */
    public static final int IS_LABEL = 1;

    /**
     * 超链接指向患教页
     */
    public static final Integer URL_TYPE_EDU = 2;// 超链接指向患教页

    /**
     * 超链接指向个人中心
     */
    public static final Integer URL_TYPE_USER = 1;// 超链接指向个人中心
    /**
     * 是否可分享：是
     */
    public static final Integer SHARE_Y = 1;
    /**
     * 是否可分享：否
     */
    public static final Integer SHART_N = 0;

    /**
     * 主键id：<code>id</code>
     */
    private Long id;
    /**
     * 公告标题：<code>title</code>
     */
    private String title;
    /**
     * 公告删除状态(0:已删除，1：正常)：<code>type</code>
     */
    private Integer type;
    /**
     * 公告内容：<code>content</code>
     */
    private String content;
    /**
     * 开始时间：<code>startTime</code>
     */
    private Date startTime;
    /**
     * 结束时间：<code>endTime</code>
     */
    private Date endTime;
    /**
     * 公告状态(1：待发送、2：公告中、3：已停止、4：已失效)：<code>status</code>
     */
    private Integer status;
    /**
     * 创建时间：<code>createdAt</code>
     */
    private Date createdAt;
    /**
     * 创建人：<code>createdBy</code>
     */
    private String createdBy;
    /**
     * 修改时间：<code>changedAt</code>
     */
    private Date changedAt;
    /**
     * 修改人：<code>changedBy</code>
     */
    private String changedBy;
    /**
     * 公告主题id：<code>topicId</code>
     */
    private Long topicId;
    /**
     * 封面图片：<code>coverImg</code>
     */
    private String coverImg;
    /**
     * 封面图片是否在正文显示0-否，1-是：<code>showCoverImg</code>
     */
    private Integer showCoverImg;
    /**
     * 公告摘要：<code>summary</code>
     */
    // private String summary;
    /**
     * 公告类型，1：图文，2：外链，3：纯文本：<code>noticeType</code>
     */
    private Integer noticeType;

    // 2.13新增
    /**
     * APP按钮文案
     */
    private String linkComment;
    /**
     * 超链接指向哪里[1：宣教页,2：个人中心]
     */

    private Integer urlType;
    /**
     * 超链接URL
     */
    private String urlLink;

    /**
     * 是否选择医生标签
     */
    private Boolean isLabel;

    /**
     * 是否可分享
     */
    private Boolean share;

    @Column(name = "is_label")
    public Boolean getIsLabel() {
        return this.isLabel;
    }

    public void setIsLabel(Boolean isLabel) {
        if (null == isLabel) {
            isLabel = false;
        } else {
            this.isLabel = isLabel;
        }
    }

    @Column(name = "link_comment")
    public String getLinkComment() {
        return this.linkComment;
    }

    public void setLinkComment(String linkComment) {
        this.linkComment = linkComment;
    }

    @Column(name = "url_type")
    public Integer getUrlType() {
        return this.urlType;
    }

    public void setUrlType(Integer urlType) {
        this.urlType = urlType;
    }

    @Column(name = "url_link")
    public String getUrlLink() {
        return this.urlLink;
    }

    public void setUrlLink(String urlLink) {
        this.urlLink = urlLink;
    }

    @Column(name = "notice_type")
    public Integer getNoticeType() {
        return this.noticeType;
    }

    public void setNoticeType(Integer noticeType) {
        this.noticeType = noticeType;
    }

    /**
     * @return Long 取得域 id 的方法。
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Long getId() {
        return this.id;
    }

    /**
     * @param id 对域 id 的设置方法.
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * @return String 取得域 title 的方法。
     */
    @Column(name = "title")
    public String getTitle() {
        return this.title;
    }

    /**
     * @param title 对域 title 的设置方法.
     */
    public void setTitle(String title) {
        this.title = title;
    }

    /**
     * @return Integer 取得域 type 的方法。
     */
    @Column(name = "type")
    public Integer getType() {
        return this.type;
    }

    /**
     * @param type 对域 type 的设置方法.
     */
    public void setType(Integer type) {
        this.type = type;
    }

    /**
     * @return String 取得域 content 的方法。
     */
    @Lob
    @Basic(fetch = FetchType.LAZY)
    @Column(name = "content", columnDefinition = "TEXT", length = 65535)
    public String getContent() {
        return this.content;
    }

    /**
     * @param content 对域 content 的设置方法.
     */
    public void setContent(String content) {
        this.content = content;
    }

    /**
     * @return Date 取得域 startTime 的方法。
     */
    @Column(name = "start_time")
    public Date getStartTime() {
        return this.startTime;
    }

    /**
     * @param startTime 对域 startTime 的设置方法.
     */
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    /**
     * @return Date 取得域 endTime 的方法。
     */
    @Column(name = "end_time")
    public Date getEndTime() {
        return this.endTime;
    }

    /**
     * @param endTime 对域 endTime 的设置方法.
     */
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    /**
     * @return Integer 取得域 status 的方法。
     */
    @Column(name = "status")
    public Integer getStatus() {
        return this.status;
    }

    /**
     * @param status 对域 status 的设置方法.
     */
    public void setStatus(Integer status) {
        this.status = status;
    }

    /**
     * @return Date 取得域 createdAt 的方法。
     */
    @Column(name = "created_at")
    public Date getCreatedAt() {
        return this.createdAt;
    }

    /**
     * @param createdAt 对域 createdAt 的设置方法.
     */
    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    /**
     * @return String 取得域 createdBy 的方法。
     */
    @Column(name = "created_by")
    public String getCreatedBy() {
        return this.createdBy;
    }

    /**
     * @param createdBy 对域 createdBy 的设置方法.
     */
    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    /**
     * @return Date 取得域 changedAt 的方法。
     */
    @Column(name = "changed_at")
    public Date getChangedAt() {
        return this.changedAt;
    }

    /**
     * @param changedAt 对域 changedAt 的设置方法.
     */
    public void setChangedAt(Date changedAt) {
        this.changedAt = changedAt;
    }

    /**
     * @return String 取得域 changedBy 的方法。
     */
    @Column(name = "changed_by")
    public String getChangedBy() {
        return this.changedBy;
    }

    /**
     * @param changedBy 对域 changedBy 的设置方法.
     */
    public void setChangedBy(String changedBy) {
        this.changedBy = changedBy;
    }

    @Column(name = "topic_id")
    public Long getTopicId() {
        return this.topicId;
    }

    public void setTopicId(Long topicId) {
        this.topicId = topicId;
    }

    @Column(name = "cover_img")
    public String getCoverImg() {
        return this.coverImg;
    }

    public void setCoverImg(String coverImg) {
        this.coverImg = coverImg;
    }

    @Column(name = "show_cover_img")
    public Integer getShowCoverImg() {
        return this.showCoverImg;
    }

    public void setShowCoverImg(Integer showCoverImg) {
        this.showCoverImg = showCoverImg;
    }

    @Column(name = "share")
    public Boolean getShare() {
        return this.share;
    }

    public void setShare(Boolean share) {
        if (null == share) {
            this.share = true;
        } else {
            this.share = share;
        }
    }
}
